package com.baichang.taoshunda.service.impl;

import com.baichang.framework.excelption.ServiceException;
import com.baichang.framework.model.Page;
import com.baichang.framework.utils.RegexUtils;
import com.baichang.taoshunda.dao.HtmlDao;
import com.baichang.taoshunda.entity.Html;
import com.baichang.taoshunda.service.HtmlService;
import org.apache.commons.collections.map.HashedMap;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * Created by Administrator on 2017/9/20 0020.
 */
@Service
public class HtmlServiceImpl implements HtmlService {

    @Autowired
    private HtmlDao htmlDao;

    /**
     * 查询用户协议
     *
     * @param nowPage
     * @param pageSize
     * @return
     */
    @Override
    public Page queryHtmlInfo(int nowPage, int pageSize) {
        return htmlDao.queryHtmlInfo(nowPage, pageSize);
    }

    /**
     * 修改
     *
     * @param id
     * @param name
     * @param value
     * @return
     */
    @Override
    public int update(Integer id, String name, String value) {
        Map map = new HashedMap();
        map.put("name", name);
        String newValue = "";
        Document document = Jsoup.parse(value);
        Elements telDivs = document.select("span");
        System.out.println(telDivs.size());
        for (int i = 0; i < telDivs.size(); i++) {
            Element span = telDivs.get(i);
            String spanText = span.html();
            System.out.println("spantext:" + spanText);
            if (checkCellphone(spanText) || checkTelephone(spanText) || checkTelephon400(spanText)) {
                String aHtml = "<a href='tel:" + spanText + "'>" + spanText + "</a>";
                span.html(aHtml);
            }
        }
        newValue = document.body().html();
        map.put("value", newValue);
        return htmlDao.update(map, id);
    }

    /**
     * 验证手机号码
     * <p>
     * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147
     * 联通号码段:130、131、132、136、185、186、145
     * 电信号码段:133、153、180、189
     *
     * @param cellphone
     * @return
     */
    public static boolean checkCellphone(String cellphone) {
        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$";
        return RegexUtils.matcher(cellphone, regex);
    }

    /**
     * 验证固话号码
     *
     * @param telephone
     * @return
     */
    public static boolean checkTelephone(String telephone) {
        String regex = "^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$";
        return RegexUtils.matcher(telephone, regex);
    }

    /**
     * 验证400
     *
     * @param telephone
     * @return
     */
    public static boolean checkTelephon400(String telephone) {
        String regex = "^400(-\\d{3,4}){2}$";
        return RegexUtils.matcher(telephone, regex);
    }

    @Override
    public Html queryById(Integer id) throws ServiceException {
        Html html = htmlDao.getEntityById(id);
        if (html == null) {
            throw new ServiceException("参数有误");
        }
        return html;
    }

}
